package com.broada.apm.indicator.api;

import java.util.List;

import com.broada.apm.model.L7Module;
import com.broada.apm.model.RemoteProtocolInfo;

public interface L7ModuleService {
	
	/**
	 * 添加L7模块
	 * @param l7Module
	 */
	public void addL7Module(L7Module l7Module);
	
	/**
	 * 更新L7模块
	 * @param l7Module
	 */
	public void updateL7Module(L7Module l7Module);
	
	/**
	 * 删除L7模块
	 * @param l7Module
	 */
	public void deleteL7Module(L7Module l7Module);
	
	/**
	 * 根据L7模块id查询
	 * @param l7ModuleId
	 * @return
	 */
	public L7Module getL7ModuleById(String l7ModuleId);
	
	/**
	 * 查询所有L7模块
	 * @return
	 */
	public List<L7Module> getAllL7Modules();

	/**
	 * 根据协议名称获取协议
	 * @param tradeProto
	 * @return
	 */
	public L7Module getL7ModuleByCname(String tradeProto);
	
	/**
	 * 记录远程l7module的状态信息
	 * @param tradeProto
	 * @return
	 */
	public void addRemoteProtocolInfo(RemoteProtocolInfo info);
	
	/**
	 * 根据协议分析器id获取远程l7module的状态信息
	 * @param tradeProto
	 * @return
	 */
	public List<RemoteProtocolInfo> getRemoteProtocolInfoByAnalyzerId(RemoteProtocolInfo info);
	
	/**
	 * 更新远程l7module的状态信息
	 * @param tradeProto
	 * @return
	 */
	public void updateRemoteProtocolInfo(RemoteProtocolInfo info);
	
	/**
	 * 删除远程l7module的状态信息
	 * @param tradeProto
	 * @return
	 */
	public void deleteRemoteProtocolInfo(RemoteProtocolInfo info);
	
	/**
	 * 查询远程l7module的状态信息
	 * @param tradeProto
	 * @return
	 */
	public RemoteProtocolInfo queryRemoteProtocolInfo(RemoteProtocolInfo info);
}
